package org.ichihamigua.common.qiniucloud.service;

import com.alibaba.fastjson2.JSONObject;
import com.qiniu.util.Auth;
import org.ichihamigua.common.framework.entity.Result;
import org.ichihamigua.common.qiniucloud.vo.UploadPartVo;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.multipart.MultipartFile;

/**
 * 七牛云请求服务
 * @author rainkyzhong
 * @date 2023/10/29 13:25
 */
public interface QiniuRequestService {
    Auth getAuth();

    /**
     * 上传分片文件
     * @param bucketName    空间名称
     * @param uploadId      上传任务ID
     * @param partNumber    分片序号
     * @param saveName      保存的文件名
     * @param file          文件
     * @return  请求结果
     */
    Result<UploadPartVo> uploadPart(String bucketName, String uploadId, Integer partNumber, String saveName, MultipartFile file);

    /**
     * 请求API
     * @param api API
     * @param bucketName    空间名称
     * @param methodType    请求方法
     * @param data          请求数据
     * @param headers       请求头
     * @param responseType  返回类型
     * @return  根据指定返回类型接收，七牛云返回的数据，如果解析失败则会抛出报错
     */
    <T> Result<T> request(String api, String bucketName, HttpMethod methodType, JSONObject data, HttpHeaders headers, Class<T> responseType);
}
